package com.entmanage.base.collegeco.domain;

import java.util.List;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.entmanage.common.annotation.Excel;
import com.entmanage.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 实习生信息对象 hrm_intern
 *
 * @author lsq
 * @date 2025-07-31
 */
@ApiModel(value = "HrmIntern", description = "实习生信息对象")
public class CollegecoIntern extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 实习生ID，主键 */
    @ApiModelProperty(value = "实习生ID，主键")
    private Long internId;

    /** 系统用户ID，关联用户表（如：sys_user） */
    @Excel(name = "系统用户ID，关联用户表", readConverterExp = "如=：sys_user")
    @ApiModelProperty(value = "系统用户ID，关联用户表（如：sys_user）")
    private Long userId;

    /** 员工ID（实习转正后填充） */
    @Excel(name = "员工ID", readConverterExp = "实=习转正后填充")
    @ApiModelProperty(value = "员工ID（实习转正后填充）")
    private Long empId;

    /** 学生姓名 */
    @Excel(name = "学生姓名")
    @ApiModelProperty(value = "学生姓名")
    private String studentName;

    /** 学号，唯一 */
    @Excel(name = "学号，唯一")
    @ApiModelProperty(value = "学号，唯一")
    private String studentNo;

    /** 学校名称 */
    @Excel(name = "学校名称")
    @ApiModelProperty(value = "学校名称")
    private String school;

    /** 学历 */
    @Excel(name = "学历")
    @ApiModelProperty(value = "学历")
    private String degree;

    /** 学院 */
    @Excel(name = "学院")
    @ApiModelProperty(value = "学院")
    private String college;

    /** 专业 */
    @Excel(name = "专业")
    @ApiModelProperty(value = "专业")
    private String major;

    /** 班级名称，如：计算机2021级1班 */
    @Excel(name = "班级名称，如：计算机2021级1班")
    @ApiModelProperty(value = "班级名称，如：计算机2021级1班")
    private String className;

    /** 实习单位 */
    @Excel(name = "实习单位")
    @ApiModelProperty(value = "实习单位")
    private String internshipCompany;

    /** 实习岗位 */
    @Excel(name = "实习岗位")
    @ApiModelProperty(value = "实习岗位")
    private String internshipPosition;

    /** 实习开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "实习开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "实习开始日期")
    private Date internshipStart;

    /** 实习结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "实习结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "实习结束日期")
    private Date internshipEnd;

    /** 学校指导教师 */
    @Excel(name = "学校指导教师")
    @ApiModelProperty(value = "学校指导教师")
    private String instructorTeacher;

    /** 企业导师 */
    @Excel(name = "企业导师")
    @ApiModelProperty(value = "企业导师")
    private String enterpriseMentor;

    /** 实习记录（可存摘要、链接、或附件ID） */
    @Excel(name = "实习记录", readConverterExp = "可=存摘要、链接、或附件ID")
    @ApiModelProperty(value = "实习记录（可存摘要、链接、或附件ID）")
    private String internshipRecord;

    /** 状态：1-实习中，2-已转正，3-已终止，4-已结束 */
    @Excel(name = "状态：1-实习中，2-已转正，3-已终止，4-已结束")
    @ApiModelProperty(value = "状态：1-实习中，2-已转正，3-已终止，4-已结束")
    private String status;

    /** 实习生任务书信息 */
    @ApiModelProperty(value = "实习生任务书信息")
    private List<CollegecoInternTask> hrmInternTaskList;

    /** 实习生成绩鉴定主信息 */
    @ApiModelProperty(value = "实习生成绩鉴定主信息")
    private List<CollegecoInternEvaluation> hrmInternEvaluationList;

    /** 实习报告信息 */
    @ApiModelProperty(value = "实习报告信息")
    private List<CollegecoInternReport> hrmInternReportList;

    /** 实习周报（每周提交一次）信息 */
    @ApiModelProperty(value = "实习周报（每周提交一次）信息")
    private List<CollegecoInternWeeklyLog> hrmInternWeeklyLogList;

    /** 部门ID */
    @Excel(name = "部门ID")
    @ApiModelProperty(value = "部门ID")
    private Long deptId;

    /** 删除逻辑标识 */
    @ApiModelProperty(value = "删除逻辑标识")
    private String delFlag;

    public void setInternId(Long internId)
    {
        this.internId = internId;
    }

    public Long getInternId()
    {
        return internId;
    }
    public void setUserId(Long userId)
    {
        this.userId = userId;
    }

    public Long getUserId()
    {
        return userId;
    }
    public void setEmpId(Long empId)
    {
        this.empId = empId;
    }

    public Long getEmpId()
    {
        return empId;
    }
    public void setStudentName(String studentName)
    {
        this.studentName = studentName;
    }

    public String getStudentName()
    {
        return studentName;
    }
    public void setStudentNo(String studentNo)
    {
        this.studentNo = studentNo;
    }

    public String getStudentNo()
    {
        return studentNo;
    }
    public void setSchool(String school)
    {
        this.school = school;
    }

    public String getSchool()
    {
        return school;
    }
    public void setDegree(String degree)
    {
        this.degree = degree;
    }

    public String getDegree()
    {
        return degree;
    }
    public void setCollege(String college)
    {
        this.college = college;
    }

    public String getCollege()
    {
        return college;
    }
    public void setMajor(String major)
    {
        this.major = major;
    }

    public String getMajor()
    {
        return major;
    }
    public void setClassName(String className)
    {
        this.className = className;
    }

    public String getClassName()
    {
        return className;
    }
    public void setInternshipCompany(String internshipCompany)
    {
        this.internshipCompany = internshipCompany;
    }

    public String getInternshipCompany()
    {
        return internshipCompany;
    }
    public void setInternshipPosition(String internshipPosition)
    {
        this.internshipPosition = internshipPosition;
    }

    public String getInternshipPosition()
    {
        return internshipPosition;
    }
    public void setInternshipStart(Date internshipStart)
    {
        this.internshipStart = internshipStart;
    }

    public Date getInternshipStart()
    {
        return internshipStart;
    }
    public void setInternshipEnd(Date internshipEnd)
    {
        this.internshipEnd = internshipEnd;
    }

    public Date getInternshipEnd()
    {
        return internshipEnd;
    }
    public void setInstructorTeacher(String instructorTeacher)
    {
        this.instructorTeacher = instructorTeacher;
    }

    public String getInstructorTeacher()
    {
        return instructorTeacher;
    }
    public void setEnterpriseMentor(String enterpriseMentor)
    {
        this.enterpriseMentor = enterpriseMentor;
    }

    public String getEnterpriseMentor()
    {
        return enterpriseMentor;
    }
    public void setInternshipRecord(String internshipRecord)
    {
        this.internshipRecord = internshipRecord;
    }

    public String getInternshipRecord()
    {
        return internshipRecord;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getStatus()
    {
        return status;
    }

    public List<CollegecoInternTask> getHrmInternTaskList()
    {
        return hrmInternTaskList;
    }

    public void setHrmInternTaskList(List<CollegecoInternTask> hrmInternTaskList)
    {
        this.hrmInternTaskList = hrmInternTaskList;
    }

    public List<CollegecoInternEvaluation> getHrmInternEvaluationList()
    {
        return hrmInternEvaluationList;
    }

    public void setHrmInternEvaluationList(List<CollegecoInternEvaluation> hrmInternEvaluationList)
    {
        this.hrmInternEvaluationList = hrmInternEvaluationList;
    }

    public List<CollegecoInternReport> getHrmInternReportList()
    {
        return hrmInternReportList;
    }

    public void setHrmInternReportList(List<CollegecoInternReport> hrmInternReportList)
    {
        this.hrmInternReportList = hrmInternReportList;
    }

    public List<CollegecoInternWeeklyLog> getHrmInternWeeklyLogList()
    {
        return hrmInternWeeklyLogList;
    }

    public void setHrmInternWeeklyLogList(List<CollegecoInternWeeklyLog> hrmInternWeeklyLogList)
    {
        this.hrmInternWeeklyLogList = hrmInternWeeklyLogList;
    }

    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }

    public Long getDeptId()
    {
        return deptId;
    }

    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag()
    {
        return delFlag;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("internId", getInternId())
            .append("userId", getUserId())
            .append("empId", getEmpId())
            .append("studentName", getStudentName())
            .append("studentNo", getStudentNo())
            .append("school", getSchool())
                .append("degree", getDegree())
            .append("college", getCollege())
            .append("major", getMajor())
            .append("className", getClassName())
            .append("internshipCompany", getInternshipCompany())
            .append("internshipPosition", getInternshipPosition())
            .append("internshipStart", getInternshipStart())
            .append("internshipEnd", getInternshipEnd())
            .append("instructorTeacher", getInstructorTeacher())
            .append("enterpriseMentor", getEnterpriseMentor())
            .append("internshipRecord", getInternshipRecord())
            .append("status", getStatus())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("hrmInternTaskList", getHrmInternTaskList())
                .append("hrmInternEvaluationList", getHrmInternEvaluationList())
                .append("hrmInternReportList", getHrmInternReportList())
                .append("hrmInternWeeklyLogList", getHrmInternWeeklyLogList())
                .append("delFlag", getDelFlag())
                .append("createBy", getCreateBy())
                .append("updateBy", getUpdateBy())
                .append("remark", getRemark())
                .append("deptId", getDeptId())
            .toString();
    }
}
